package it.csi.finregio.finreges.client.services;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;

import it.crp.crparch.web.struts.service.CRPStrutsService;
import it.crp.crparch.web.struts.service.WebServiceException;
import it.crp.logger.PrdLoggerFactory;
import it.csi.csi.wrapper.CSIException;
import it.csi.finregio.finreges.presentation.form.SchedaForm;
import it.csi.finregio.finreric.client.SearchParamConstants;
import it.csi.finregio.finreric.client.ServiceLocator;
import it.csi.finregio.finreric.interfacecsi.SearchSchedaCSIService;

public class PrintRTFService implements CRPStrutsService {

	private Logger log = PrdLoggerFactory.getInstance().getLogger("finreges");

	public Object execute(ActionForm form) throws WebServiceException {
		log .info("[PrintRTFService::execute] BEGIN");
		try {
			SchedaForm sf = (SchedaForm) form;
			Map params = new HashMap();
			if(sf.getAnno()!=null && !sf.getAnno().equals("-1")){
				params.put(SearchParamConstants.ANNO, sf.getAnno());
			}
			if(sf.getNumeroQuaderno()!=null && !sf.getNumeroQuaderno().trim().equals("")){
				params.put(SearchParamConstants.NUMERO_QUADERNO, sf.getNumeroQuaderno());
			}
			if(sf.getProgressivo()!=null && !sf.getProgressivo().trim().equals("")){
				params.put(SearchParamConstants.NUMERO_SCHEDA, sf.getProgressivo());
			}
			if(sf.getTitolo()!=null && !sf.getTitolo().trim().equals("")){
				params.put(SearchParamConstants.TITOLO, sf.getTitolo());
			}
			if(sf.getClassificazione()!=null && !sf.getClassificazione().equals("-1")){
				params.put(SearchParamConstants.CLASSIFICAZIONE, sf.getClassificazione());
			}
			if(sf.getSottoClassificazione()!=null && !sf.getSottoClassificazione().equals("-1")){
				params.put(SearchParamConstants.SOTTOCLASSIFICAZIONE, sf.getSottoClassificazione());
			}
			if(sf.getDestinatari()!=null && !sf.getDestinatari().trim().equals("")){
				params.put(SearchParamConstants.DESTINATARI, sf.getDestinatari());
			}		
			if(sf.getProcedura()!=null && !sf.getProcedura().trim().equals("")){
				params.put(SearchParamConstants.PROCEDURA, sf.getProcedura());
			}		
			if(sf.getFinanziamenti()!=null && !sf.getFinanziamenti().trim().equals("")){
				params.put(SearchParamConstants.FINANZIAMENTI, sf.getFinanziamenti());
			}		
			if(sf.getIdEnte()!=null && !sf.getIdEnte().equals("-1")){
				params.put(SearchParamConstants.ASSESSORATO, sf.getIdEnte());
			}
			if(sf.getProgressivoDirezione()!=null && !sf.getProgressivoDirezione().equals("-1")){
				params.put(SearchParamConstants.DIREZIONE, sf.getProgressivoDirezione());
			}
//	if(sf.getClassificazione()!=null && !sf.getClassificazione().equals("-1")){
//		params.put(SearchParamConstants.CLASSIFICAZIONE, sf.getClassificazione());
//	}
			if(sf.getStatoScheda()!=null && !sf.getStatoScheda().equals("-1")){
				params.put(SearchParamConstants.STATO_SCHEDA, sf.getStatoScheda());
			}
			if(sf.getSchedaScaduta()!=null && !sf.getSchedaScaduta().equals("false")){
				params.put(SearchParamConstants.SCHEDA_SCADUTA, sf.getSchedaScaduta());
			}
			if(sf.getDallaSchedaN()!=null && !sf.getDallaSchedaN().trim().equals("")){
				params.put(SearchParamConstants.DALLA_SCHEDA_N,sf.getDallaSchedaN());
			}
			if(sf.getAllaSchedaN()!=null && !sf.getAllaSchedaN().trim().equals("")){
				params.put(SearchParamConstants.ALLA_SCHEDA_N,sf.getAllaSchedaN());
			}
			SearchSchedaCSIService service =ServiceLocator.getInstance();
			Collection schedeFound=service.findSchedeByParam((HashMap) params);

			return schedeFound;
		} catch (CSIException e) {
			log.error("[PrintRTFService::execute]  " + e.getMessage(),
					e);
			throw new WebServiceException(e.getMessage());
		}finally{
			log.info("[PrintRTFService::execute] END");
		}
	}

}
